# Python中的每个类都派生自该类object。它是Python中最基本的类型
# 几乎所有的实例都可以通过__dict__属性查看他的字典表示形式. 但object实例不行
# class Test:
#     pass
# t = Test()
# print(t.__str__)


# 方法重写是指子类重新定义父类中已有的方法，以改变或扩展方法的行为。
# 这是面向对象编程中 多态性（Polymorphism） 的核心体现。
class Animal:
    def speak(self):
        print("Animal makes a sound")

class Dog(Animal):
    # 重写父类的 speak 方法
    def speak(self,msg):
        print("Dog barks: Woof! " + msg)

class Cat(Animal):
    # 重写并调用父类方法
    def speak(self):
        super().speak()  # 先执行父类的逻辑
        print("Cat meows: Meow!")

animal = Animal()
dog = Dog()
cat = Cat()

animal.speak()  # 输出: Animal makes a sound
dog.speak("❤")     # 输出: Dog barks: Woof!
cat.speak()     # 输出: Animal makes a sound → Cat meows: Meow!